
///////////////////////////////////////////////////////////////////////////////
//
//  Copyright (c) 2002, Perry L. Miller IV
//  All rights reserved.
//  BSD License: http://www.opensource.org/licenses/bsd-license.html
//
///////////////////////////////////////////////////////////////////////////////

///////////////////////////////////////////////////////////////////////////////
//
//  Pool task class.
//
///////////////////////////////////////////////////////////////////////////////

#include "Usul/Threads/Task.h"

using namespace Usul::Threads;


///////////////////////////////////////////////////////////////////////////////
//
//  Constructor
//
///////////////////////////////////////////////////////////////////////////////

Task::Task ( unsigned long id, const std::string& name, Callback started, Callback finished, Callback cancelled, Callback error ) : BaseClass(),
  _id          ( id ),
  _name        ( name ),
  _cancelledCB ( cancelled ),
  _errorCB     ( error ),
  _finishedCB  ( finished ),
  _startedCB   ( started )
{
}


///////////////////////////////////////////////////////////////////////////////
//
//  Destructor
//
///////////////////////////////////////////////////////////////////////////////

Task::~Task()
{
}


///////////////////////////////////////////////////////////////////////////////
//
//  Return the id.
//
///////////////////////////////////////////////////////////////////////////////

unsigned long Task::id() const
{
  return _id;
}


///////////////////////////////////////////////////////////////////////////////
//
//  Return the callback.
//
///////////////////////////////////////////////////////////////////////////////

void Task::cancelled()
{
  if ( _cancelledCB )
    _cancelledCB();
}


///////////////////////////////////////////////////////////////////////////////
//
//  Return the callback.
//
///////////////////////////////////////////////////////////////////////////////

void Task::error()
{
  if ( _errorCB )
    _errorCB();
}


///////////////////////////////////////////////////////////////////////////////
//
//  Return the callback.
//
///////////////////////////////////////////////////////////////////////////////

void Task::finished()
{
  if ( _finishedCB )
    _finishedCB();
}


///////////////////////////////////////////////////////////////////////////////
//
//  Return the callback.
//
///////////////////////////////////////////////////////////////////////////////

void Task::started()
{
  if ( _startedCB )
    _startedCB();
}


///////////////////////////////////////////////////////////////////////////////
//
//  Return the name.
//
///////////////////////////////////////////////////////////////////////////////

std::string Task::name() const
{
  return _name;
}
